基于深度学习的在线恶意URL和DNS检测方案

基于深度学习的在线恶意URL和DNS检测方案

原文作者:Jianguo Jiang, Jiuming Chen, K-K-Raymond Choo, Chao Liu, Kunying Liu and Min Yu

原文标题:A Deep Learning Based Online Malicious URL and DNS Detection Scheme

原文会议:Security and Privacy in Communication Networks(SecureComm 2017)

原文链接https://link.springer.com/chapter/10.1007/978-3-319-78813-5_22

随着越来越多的设备联网,利用人、过程和技术漏洞的网络威胁越来越普遍。比如去年的勒索软件WannaCry造成了巨大的损失,最常见的方式就是引诱人们点击恶意网站,也就是钓鱼。一个钓鱼网站可能会伪装成各种各样的广告,以达到攻击的目的。为了应对这种网络安全威胁,检测恶意URL非常有必要。目前对URL和DNS进行研究和检测的相关文献其实已经很多了,各种技术也应用得很成熟,足见在恶意网络攻击中这两类攻击媒介之常见。

本文提出了一种基于字符级深度神经网络的在线检测方案。具体而言,该方案使用一些自然语言处理方法将URL和DNS字符串映射为矢量形式。再使用CNN(卷积神经网络)网络框架自动提取恶意特征并训练分类模型。使用真实的URL和DNS数据集进行实验,结果表明,所提出的方法优于几种最先进的基线方法,有较高的效率和可扩展性。

作者的工作:

论文从如今网络空间安全的严峻形势出发,引入恶意URL在攻击行为中的表现形式,主要是钓鱼网站。比较前人所做的工作并总结研究成果,提出基于深度学习的在线恶意URL和DNS检测方案,主要分为三个模块,数据集的收集、深度学习分类模型的构建和威胁情报的收集更新。论文还对构建的分类检测模型进行真实数据验证和基于各项指标评估。最后讨论了所提出的方法可通用于短文本检测问题以及将在实际环境中部署所提出的方法。

一、引言与文献综述

针对传统的恶意检测URL的方法依赖于专家或机器学习提取的特征,作者提出三个明显的问题:

  • (1) 网站数目及网络流量大幅增加,令有效及时检测恶意URL的工作变得复杂(例如,由于恶意URL需要大量新功能)。

  • (2) 不平衡数据集。与在线流量总量相比,恶意url的数量相对较少,这种不平衡(普通URL和恶意URL之间)可能导致不稳定的分类模型。

  • (3) 不断发展的攻击技术。攻击者通常使用广泛的技术来规避或避免现有的检测技术。

基于此,作者提出了基于字符级的并将深度神经网络、自语言处理与威胁情报三者相结合的检测方案。

而现有的检测恶意URL的方法可分为以下几类:

方法
基于黑名单
基于特征集
基于机器学习
基于URL
基于内容

本文只关注与在线检测相关的方法:基于URL的方法。
其中基于URL的方法是只利用URL自身的结构如长度、域名和URL中点(.)的数量,即紧紧围绕URL自身的属性进行。该方法效率高因此也被广泛应用,无论是手工提取特征集还是利用机器学习检测。

下表展示了三种常用机器学习算法的特点与局限性

而本文使用深度学习算法CNN去自动提取URL中隐藏的特征信息,具有强泛化能力。

二、提出方法

整个模型的框架图:

总体来看就是训练集导入深度学习分类模型,模型采用CNN框架,数据预处理和嵌入使用了自然语言处理方法,在生成模型后将收集到的URL和DNS的威胁情报加入更新,最终得到在线恶意URL检测模型。

1.训练数据集

1.1数据特征

URL字符串包含了三种不同的语义段:域名、目录路径和文件名,还包含了数字、字母和”?””,”&”等符号。对此如下形式的元祖用于定义一个URL字符串:p = (h, d, f)。h代表域名,d代表目录路径,f则代表了文件名。

假设有恶意URL字符串p =(h,d,f)和正常URL字符串p’=(h’,d’,f’),如果存在文本片段形式的t’或其他形式的t”,t’与t”的一个特征满足p的定义但不符合p’,那么t’与t”可作为对URL进行分类的特征。

恶意URL举例:

1
2
http://www.aaa.com/1.php?Include=http://www.bbb.com/hehe.php
http://www.sqlinsertion.com/adminlogin.php/**/and/**/1=1.

1.2模型评估

论文采用错误标记的URL数量和精确率评估准确性并采用运行时间评估效率。

数据集中malicious URL是negative sample负样本,normal URL是positive sample正样本。

Mislabeled number: FN + FP

Accuracy rate: TN/FN + TN.

2.字符级深度学习框架

2.1预处理

由于HTTP和HTTPS协议的广泛使用,因此在检测中省略”http://“和”https://“是没有安全问题的。鉴于URL通常由数字,字母和一些符号组成。所以在文章提出的方法中,过滤了对分类结果影响很小的特殊符号,例如”_”和”#”等。经过预处理的数据集更简洁从而减少了之后步骤中的时间和资源需求。

2.2嵌入

论文需要将URL序列向量化后作为深度学习框架的输入,字符转换为词向量使用的是自然语言处理中的独热编码方法。独热编码,又称一位有效码,用序列化的数字(只有0和1)表达特征。主要思路是使用N位数字对N种情况进行编码,例如一串长度为L的字符串,每位字符有M种情况,则经过向量化后为L*M的矩阵,其中超过L长度的字符将被舍去,不在字符表(覆盖了全部M种情况)上的以及空字符将使用0替代。字符表是一个包含了26个字母、10位数字和14个特俗符号的集合。

abcdefghijklmnopqrstuvwxyz

0123456789

-;!?:@#$^*% = <>

考虑到实际情况,实验中选择L=256,M=50。

2.3CNN框架与分类模型

这部分是将字符串嵌入矩阵后输入到深度学习框架的具体配置。CNN框架可自行了解,此处不再赘述。

3.更新

由于深度学习模型的训练过程通常耗时较长,难以对在线检测系统进行更新。文章使用当前更新的威胁情报(如URL和DNS黑名单)和增量学习模型尽量减小影响。

二、评估

1.实验环境与参照实验

论文选了两个参照实验:

  • 基于人工提取特征,特征包括了URL长度,“.”的数量和词语特征等,这些特征形成了一个非常大但稀疏的特征向量。
  • 为了比较基于字符级嵌入的深度学习和基于字级嵌入的深度学习之间的准确性实现的基于字级嵌入的深度学习框架。

2.数据

对于恶意url,从Phish Tank和Virus Total获取。正常URL主要是从一些公开数据集中下载,比如谷歌和DMOZ
。训练数据集和测试数据集按照9:1随机分配,随机选择90%的标记数据作为训练数据集,其余10%作为测试数据集。

3.结果

X轴表示三种模型,Y轴表示测试集中每1000个URL里被标记错误的数量

X轴表示三种模型,Y轴表示对两个测试集进行分类时间(单位秒),两个测试集分别包括了1000与2000个URL

四、结论

检测恶意URL和DNS的能力将越来越重要,在我们的互联网连接社会,特别是在物联网部署。
本文基于URL和DNS的文本模式,提出了一种基于字符级CNN的恶意URL和DNS检测方法。
我们使用真实的数据集来评估我们的方法,这表明我们的方法是准确和高效的。
此外,该方案是一种针对短文本检测问题的通用检测方案,在其他场合也有应用。
未来的研究包括在现实环境中部署所建议的方法,以便在必要时进行进一步的评估和微调。

五、讨论

文章主要提出了使用深度学习来检测恶意URL与DNS,作者表示也适用于短文本的检测,我认为在文献综述那块,对比了三个(贝叶斯,SVM和逻辑回归)常用的机器学习的方法,只是定性地阐述了其速度、准确率与局限等方面的表现,但是并没有实际做实验验证,不同的实验数据对同一个模型是有不同的实验结果的。不过对于选取的参照实验具有代表性,一个验证了手动提取和深度学习自动学习特征;一个对比了字符级与词级的词向量表示方法,算法没有对比这也是前面所说的文献综述部分只是提到为止。我以前有学习过用深度学习检测DGA,使用的是RNN中的LSTM,本文使用了CNN,并说LSTM表现不如CNN(耗时明显)。希望我之后可以在实践中验证。其次,不断将更新的数据加入到数据集也是值得学习的地方,因为黑客不断地更新技术,恶意样本集也在变化,为了适应这种网络攻击的变化,我们也应随之更新。